<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>this调用</title>
    <script>
        function fn(){
            console.log("fn->",this);
        }

        const fn2=()=>{
            console.log("fn2->",this);
        }

        const obj={
            name:"Mike",
            //当属性名=属性值时，属性值可省略
            fn,
            fn2,
            sayHello(){
                function t(){
                    console.log("t->",this);
                }
                //this指向window，因为t()是直接以函数形式调用的，sayHello()才是用方法形式调用的
                t() 

                const t2 = ()=>{
                    console.log("t2->",this);
                }
                //this指向obj，因为t2是箭头函数，它的this找外层作用域，是obj
                t2()
            }
        }

        obj.fn()    //this指向obj

        /*箭头函数没有自己的this，它的this由外层作用域决定，obj在全局作用域中创建，所以this指向window*/
        obj.fn2()   //this指向window

        obj.sayHello()
    
    </script>
</head>
<body>
    
</body>
</html>